package team.knowers.qzhserver.course.course.service;

import team.knowers.qzhserver.course.course.entity.dao.CourseDO;
import team.knowers.qzhserver.course.course.entity.dto.CourseReleaseDTO;
import team.knowers.qzhserver.course.course.entity.dto.CourseUpdateDTO;

/**
 * @author zcb
 * @date 2024/3/6 14:00
 */
public interface CourseService  {
    /**
     * 创建一个空白的新课程
     * @param uid 创建者id
     * @param name 课程名称（可更改）
     * @return
     */
    CourseDO createCourse(String uid,String name);

    /**
     * 通过课程id利用缓存快速查找课程
     * @param id 课程id
     * @return 找到的课程
     */
    CourseDO getCourseById(String id);

    /**
     * 更新课程信息
     * @param courseUpdateDTO 课程更新参数
     * @return 更新是否成功
     */
    Boolean updateCourse(CourseUpdateDTO courseUpdateDTO);

    /**
     * 删除课程
     * @param id 课程id
     * @return 删除操作是否成功
     */
    Boolean deleteCourse(String id) throws Exception;

    CourseCacheService getCacheService();

    /**
     * 发布课程，设置相关参数并将课程状态设置为待审核
     * @param courseReleaseDTO 课程发布参数
     * @return  是否发布成功
     */
    Boolean releaseCourse(CourseReleaseDTO courseReleaseDTO);
}
